20.3. 绝对 vs. 相对模块引用

如在上一节讨论 @TemplateViewable 可提供的方式来定义一个参考模板。现在我们将讨论如何将这些值解释和如何发现具体的模板。

20.3.1. 相对模块引用

相对引用是指任何路径不以 ‘/‘字符开头 (如 index.foo)。这种类型的引用,将会通过前面加上最后匹配的完全名字的值来转为绝对路径。

考虑Example 20.3, “Using @Template on a resource class”,模板名称引用 index 是一个相对值,Jersey 将会使用完全匹配的类名称 Foo 来转为绝对模板引用(更多详见 Viewable),我们的例子:

“/com/foo/Foo/index”

Jersey 将会搜索所有的注册的模板处理器(见 20.7. Writing Custom Templating Engines)来找到可以转为绝对模板引用的模板处理器。如果这样的模板处理器找到了,那么可以被“处理”的模板将会使用提供的数据模型来处理。

注意:如果不提供或空的模板参考(无论是在 Viewable 或通过 @Template)那么假设为 index 引用,对这个值的所有进一步的处理是这一价值。

20.3.2. 绝对模板引用

修改我们的 Foo 资源

Example 20.4. Using absolute path to template in Viewable

  1. @GET
  2. public Viewable get() {
  3. return new Viewable("/index", "FOO");
  4. }

这个例子,模板引用是以 “/“ 开头,所以无需进行绝对化,就已经是绝对引用了。

绝对模板引用以 “/“ 字符开头,(如 /com/example/index.foo) ,无需再做转换,就能通过提供的路径找到模板。

注意,然而,对于自定义模板引擎的模板处理器可以修改(和支持)绝对模板引用通过在前面添加‘基模板路径’(如果定义)而后添加模板后缀(如 foo)如果后缀不提供在引用中。

例如,假设我们想用 Mustache 模板给我们的页面,我们定义了‘基模板路径’作为页面。那么绝对模板引用 /com/example/Foo/index 模板处理器将会将引用转换成以下路径:/pages/com/example/Foo/index.mustache.